# Changelog

## v1.2.31

Bugfix in LPTN.write() function, disabled overwriting initialized iso_center in case input iso_center is None.

Fix sphinx reference to abstract tensor networks.

Update bibtex.

## v1.2.30

Iteration for fixing integration tests in qgreentea.

Bugfix multiple custom correlation measurements.

Bugfix DenseMPO: reordering strategy when sorting sites.

No use of cached singular values for measurements.

Update in abstract tensors and tensors: __matmul__, restrict_irreps, split_link_deg_charge

TNOperators can be used with pickle, which was prevented by default mapping function.

Wrapper for logger.warning to avoid repetition of warnings.

Bugfix truncation LPTN to TTO.

## v1.2.29

Provide __contains__ for TNOperators.

Bugfix parsing SVD control and tuning setting.

Avoid conversion warning for complex to real singular values.

Lindblad via quantum trajectories with weak symmetries for TTN

Bugfix Krylov (non-hermitian) solver

Small fixes (MPS raising error if not initialized, norm via singular values, time-dependent coupling Lindblad)

New method is_identical_irrep

## v1.2.28

Bugfix orthogonalization eigensolver for complex vectors.

## v1.2.27

Bugfix time evolution with measurement period.

## v1.2.26

Bugfix eigensolver not actually resolving abs with self.abs in v1.2.25

Bugfix None.__ne__ not available in python3.12

## v1.2.25

Bugfix abs is no attribute for numpy.

## v1.2.24

Bugfix in measuring entanglement entropy; taking into account that TTN uppermost layer has only one link and enabled measurement with symmetric tensors.

## v1.2.23

Integrate commits from master v1.1.12

## v1.2.22

DenseMPO and LPTN now inherits both from the new _AbstractMatrixTN class, since they shared multiple routines

Implemented __add__ method for _AbstractMatrixTN that enables sum of MPOs;

Implemented application of one/two/multi sites operators to an _AbstractMatrixTN, which can be applied from the top or from the bottom;

Implemented multiplication between two MPS mps_multiply_mps (the bond dimension fo the product is the product of the bond dimensions)

Implemented optimize_two_tensors in the _AbstractTN class

Added maxiter parameter in the greedy probability measurements for MPS to avoid an infinite loop

Fixed bug in SVD arising in

*very specific*cases;

## v1.2.21

Bugfix einsum (cupy has no out argument), normalization enforced, eigensolver assignment

Property linear algebra library

## v1.2.20

Enabled custom correlation measurements for qtealeaves.

Bugfix in ITPOSites function add_dense_mpo_list for initializing the tensor backend based on the first non-empty term instead of just the first term.

## v1.2.19

Fix calls to numpy.product with numpy.prod to prepare for numpy v2.0.0

## v1.2.18

Bugfix random SVD (data type, dimensions)

Potential bugfix in optimize with link expansion on quick return

Introduce concatenate_vectors as common interface for all backend libraries.

## v1.2.17

Enable coupling of individual terms in SumOfLocal Lindblad.

## v1.2.16

Bugfix in initializing the MPS with a general tensor backend instead of only the numpy one.

Bugfix for initializing TTN and TTO from a product state with general tensor backend.

Implemented the pad method using the expand_tensor method. Padding is only possible at the end of the tensor.

Implemented kron function for AbstractQTeaTensor and QTeaTensor.

Implemented ctrl=scalar initialization for QTeaTensor, where the tensor is filled with that scalar value. This initialization now overlaps with ctrl=”O” and ctrl=”Z”.

## v1.2.15

Incorporated python’s built-in logging functionality, removed internal logging setup code.

Deprecated verbosity option in QuantumGreenTeaSimulation.

Moved simultion-related modules to new namespace .simulation (helps filtering logs).

Added example on logging configuration (optional, works out of the box).

Track and propagate up Krylov convergence during time evolution.

Improved some log and exception messages, removed print statements.

## v1.2.14

Bugfix: attribute sum is not available for all tensorbackends and their singular values, e.g., tensorflow.

Convert norm-error in eigensolver into warning.

## v1.2.13

Broadcasting TTN states via MPI and parallel sampling via MPI.

## v1.2.12

Introduced the LocalKrausTerm, which maps a Kraus map to a set of Lindblad operators with a first-order approximation.Notice that the timestep with which you define your Kraus operator should be comparable to the timestep of the simulation. When passing the Kraus operators, the first operator should be the closest to the identity. The Kraus operator can be numerically unstable when the timestep is too small, i.e. when the resulting lindblad have entries >1

## v1.2.11

Merge bugfixes in master (v1.1.11) into develop branch.

## v1.2.10

Enabled time-evolution (`tevo_mode`=1-4) for TTOs (`tn_type`=8)

Added product_state_from_local_states for TTOs

Added ttn_to_tto, a function that converts a given TTN to a TTO (projector)

Added to_ttn, a function that converts a given TTO (projector) to a TTN

Added to_statevector for TTOs

Bugfix in compute_energy and leg_towards, where in both cases the input given to move_pos (which expects a tuple) could result in errors

Bugfix in ttn_simulator.build_effective_operators; removed the exception if the iso_center is not the default iso_center. This could result in the termination of the simulation (time-evolution), if only local measurements are performed. Now the iso_center is installed at the default position in this case. The function was further slightly changed such that correlation measurements also work on TTOs.

## v1.2.9

Bugfixes for statics and mixed device (mostly passing cgpu as actual device).

## v1.2.8

Enable skipping RG tensors which are tensors without truncation and therefore representing only a unitary transformation. Idea from renormalization group (RG).

## v1.2.7

Fix inconsistencies discovered when running qgreentea integration tests

Fix problems with symmetric links.

Fix problems with conversion into symmetric tensors for operator sets.

Fix problem with bond entropy measurement (qgreentea-fortran measures top link of TTN and all lowest layers by default).

Eigensolver cannot rely on real attribute (for future tensorflow backend).

## v1.2.6

add SumLindbladTerm to enable the term to be a sum of local Lindblad

operators.

iTPO logic can also support other non-local Lindblads now.

## v1.2.5

Allow to overrule bond dimension to reach “good” settings for hardware. Default setting does not change behavior in comparison to < v1.2.5.

## v1.2.4

Bugfix typo in test for convergence parameters at finite temperature.

## v1.2.3

Enable different Hilbert spaces via operator sets, e.g., a mixture of qubits and qudits.

## v1.2.2

TTN for systems with a non-power-of-two number of degrees of freedom via trivial legs.

## v1.2.1

Require tensor backend for python to be passed from the outside.

Tensor backend allows injection of properties of the symmetry.

Changes to abstract tensor in preparation for alternative to numpy/cupy.

Start using einsum notation for certain contractions, e.g., scale link.

Version bump minor to v1.2.x anticipating merge of master and increase to v1.1.x for master.

## v1.0.21

ITPO and SparseMPO have now an __iter__ method, that iterates through all the tensors

TensorBackend now supports mixed device for simulation, having two additional properties: self.computational_device and self.memory_device. These two devices are the same if we select a single device, i.e. device in (“cpu”, “gpu”), but differs for mixed devices. For example, is device=”cgpu”, then self.computational_device=”gpu” and self.memory_device=”cpu”.

Implemented mixed device for simulation. Now it is possible to keep all the tensors but the one we are updating on one device (cpu), and the other on the accelerating device (gpu). The movement is mostly done on the level of the iso_towards() method, since in this way we are able to overlap computations and communications. The mixed device is tested for MPS and TTN. The method that is actually doing the movement is move_pos, which converts the tensor and the effective operators insisting on that tensor.

Implemented correct convergence stats

## v1.1.12

Fix build of documentation (importlib, path, code-blocks, missing chapters)

## v1.1.11

Bugfix checkpoints: optimize did not return state, so loading did not have an effect.

## v1.1.10

Bugfix energy not json serializable (float32).

Customizable json encoder via tooling, where common unsupported cases can be added.

Remove print statement.

## v1.1.9

Bugfix of convergence parameters that could not be parameterized.

## v1.1.8

Bugfix on the ml_get_gradient_tensor method. Adding missing multiplication of the gradient by the label.

## v1.1.7

Bugfix on the QteaTensor._eigvl_svd method. Now matrices that are smaller than a 3x3 are treated by the dense solver even if “X” is the chosen method for stability of the arpack methods

## v1.1.6

Bugfix enabling MPS loading pkl files, iso center check with None.

Bugfix data type vector_with_zeros_like

Bugfix conv_params not required for SVD via SVD control.

Bugfix TTN evolution with chi=1 (throws warning, we can set minimal chi).

Bugfix TDVP imag time evo with space-link expansion: less aggressive expansion strategy to avoid issue with decompositions.

Avoid warning for inconsistency with two or more quenches (retrieving ground state parameters for couplings not present in quench).

## v1.1.5

Added the missing autodoc statements.

## v1.1.4

Bugfix for MPS initialization of singular values when starting from the |00…0> state;

Changed np.product in np.prod because of numpy deprecations;

## v1.1.3

Bugfix loading states and for imaginary TDVP missing solver.

## v1.1.2

Bugfix for combined operators and unittest to check their use in a simulation.

## v1.1.1

Update master branch to version v1.1.1 which includes the new major version v1.x.x

Changes contain everything up to version 1.0.20

## v1.0.20

Bugfix setting auto-disentangler

Bugfix nml file for convergence parameters and fortran; skipping python-only entries now.

Bugfix iso-center set as well to (0, 0) for empty TTN.

## v1.0.19

Implement checkpoints for statics after each sweep, intrasweep, and for dynamics after each time step.

New restriction on delete_existing_folder and store_checkpoints; they cannot both be True as checkpoints can never be used with this combination.

New function for QuantumGreenTeaSimulation returning status of simulations.

Generation of hash for simulations leading to the fact that unhashable objects have to be excluded.

Update all examples and make them working with qtealeaves (no code fragments for symmetries, fortran code)

Warning that fortran quenches is not consistent with time-dependent quenches in python for two and more quenches.

## v1.0.18

Bugfix for require_singvals still present in run_tn_simulation

Bugfix in contraction 43 in ITPO

Bugfix for MPS random initialization, there was an hardcoded local dimenison 2

Bugfix for QteaTensor.read, the device was not passed giving rise to an error

Several bugfixes for machine learning MPS

Bugfix for multiplication with a QteaTensor: __mul__ was implemented, but not __rmul__, and so tens*a worked, but a*tens did not. Added __rmul__ in the abstract tensor class.

Added __add__ and __iadd__ methods for QteaTensor and the abstract class. Elementwise addition.

## v1.0.17

Introduced the ATTN and DELayer class

Implemented aTTN correlation measurements

Initial state in continue_file can now be passed directly from python instead of as a file

Bugfix in TTN.from_state_vector()

Allowed to enforce SVD to have singular values on each available link of the tensor network

Implemented applying a two-site gate on a state vector.

## v1.0.16

Implemented exact diagonalization with the Krylov solver. This method avoids creating the full Hamiltonian matrix.

Added apply_ham_to_state method to QuantumModel, which computes H|psi>.

Changed the default time_evolve_modes for exact diagonalisation: 10 is with matrix construction, 11 with Krylov. 0 (default) points to 10.

## v1.0.15

Added modeling.stringterm1d and tests.modeling.tests_string_term

Bugfix for tests.modeling.tests_block_term

Bugfix for modeling.tensorproductoperator

Same changes as v0.5.13

## v1.0.14

Bugfix device None, tensors now enforce device being not None when creating tensor (For converting tensors, it will still be allowed).

Pass device through in TTN initialization.

## v0.1.13

Implement quantum trajectories.

## v1.0.12

Moved the public attribute QteaTensor.elem to the private QteaTensor._elem. The attribute can still be accessed with the QteaTensor.elem property, but cannot be set.

Added warning if you try to initialize a QteaTensor.from_elem_array using an integer array passing dtype=None. The cases where you want to use integer arithmetic in TNs are

*very rare*(please let me know if you find one).Implemented apply_mpo method for MPS and TTN that let you apply a general MPO to the state. It can be used to apply n-qubits gates with n>=2. It takes a DenseMPO as input.

Implemented matrix_to_tensorlist method for the _abstractTN, to map a generic matrix to an MPO form.

Implemented a from_matrix method for the DenseMPO

Fixed bug in copy() method of QTeaTensor when using gpu.

Fixed bug in MPS.swap_qubits.

Added in the DevelopersREADME.md how to run only tests affected by your changes using pytest (no need of migrating the unittests).

Moved TNObservables.result_buffer inside the __init__ method;

Changed the TNObsWeightedSum.from_pauli_string into a class_method;

Fixed bug for QteaTensor.read

Fixed bug for converting singular values (someone accidentally deleted the fact that singvals are reals. This messes up with mpi)

## v1.0.11

Fixed the leg order in TTO.trunc_probabilities()

## v1.0.10

Add missing methods to abstract tensor class.

Read method for tensor class (format F90 compatible), requires now tensor backend.

Modify to_dense method returning dense tensor without symmetry.

Bugfix continue file, bugfix theta tensor contraction, bond entropy measure.

## v1.0.9

Pickle TN states for continue file State2File

Enable flex-TDVP time evolution for python as in Fortran

Enable iTPO modes 2 and 4 (updated, compressed and updated)

Bugfixes (MPS Corr not enable, SPO two-tensor update, Corr measurement singular values)

Separate SPO into two classes for F90 and PY.

Start testing models.

## v1.0.8

Implemented single-site link expansion imaginary time evolution.

Improved docs of TTN;

Fixed bug for MPI communications due to the wrong type of singular values;

Fixed bug in the eigenvalue decomposition for SVDs;

Fixed the MPIMPS class for MPI simulations in qmatchatea.

## v1.0.7

Typos in TNConvergenceParameters docstring.

## v1.0.6

Bugfix weighted sum measurement via iTPO for MPS and TTN.

## v1.0.5

Enable log file in python simulator

Bugfix parameterization (tn type, mpo mode, disentangler, …)

Bugfix SPO matrices (building them, trace)

Bugfix TTN parent tensors

Add comments convergence parameters for python-only variables.

## v1.0.4

Implemented single-site imaginary time evolution.

Implemented eigenvalue decomposition svd (“E”), sparse eigenvalue decomposition svd (“X”), random svd (“R”) for QTeaTensor.

Operators for MPS.meas_tensor_prod should now be general rank-4 operators, i.e. general MPO. For the old tensor product just use bond dimension 1 MPOs. TTN.meas_tensor_prod accept rank-4 operators, but only for bond dimension 1.

Added qiskit_convention optional argument in TNObsProjective, TNObsProbability that is used only in python to avoid an hardcoded ordering.

Added a to_itpo method to TNObsCorrelation and TNObsWeightedSum to have a more readable run_measurement function.

Implemented ITPO measurement for weighted sum. Works only for two-bodies interactions at the moment.

Added tests for observables computed in run_measurement

## v1.0.3

Small changes suggested in v1.0.2 code review.

Fix qtealeaves solvers, now using norm_sqrt (equivalent to Fortran code where norm was what norm_sqrt is now).

ATTNSimulation to QuantumGreenTeaSimulation (deprecated warning for ATTNSimulation).

Enable half-precision real (via single in LinAlg), enable switching precisions.

Time evolution methods tested up to constant local terms (no interaction, no time-dependency).

Compression for iTPO

TPO via iTPO, other TPO as mpo_mode=21 still available for debugging.

## v1.0.2

Bugfix for the symmetry sector being initialized as maximum bond dimenison instead of 1

Added stop on python statics based on convergence_parameters.abs_deviation and convergence_parameters.rel_deviation

Added possible stop only after convergence_parameters.n_points_conv_check sweeps

Added selection of device and data type through the convergence parameters in python

Added the convergence_parameters.ini_bond_dimension in python, such that you can initialize a random tensor network (either TTN or MPS) at a bond dimension that is smaller than the maximum bond dimension of the simulation

## v1.0.1

Implemented Ground state search for the MPS ansatz

Effective operators are now carried over in the MPS if present

The MPS is now a backend in the ATTNSimulation for tn_type=6

The ttn_simulation and ttn_measurement functions have been Removed

Added a new file emulator/tn_simulation that takes care of a general python simulation independently from the TN ansatz

Added the physical_links method to TTN and MPS for interoperability with the TensorProductOperators

Added new initialization method for MPS. Now it can be initialized as a random mps at a given bond dimension

timestep is now an _AbstractTN function

Improved docs

TTN and MPS unittests now inherits from the AbstractTN unittests

Fixed the xp checks at any time

## v1.0.0

Introduce abstract class for tensors.

python: link expansion, iTPO, SPO, sketch single-tensor time evolution

## v0.5.14

Add bibtex files for all articles and theses involving Quantum TEA, its precessors, and the flexmps fork of the library.

## v0.5.13

Added modeling.stringterm1d and tests.modeling.tests_string_term

Bugfix for tests.modeling.tests_block_term

Bugfix for modeling.tensorproductoperator

## v0.5.12

Include changes from v0.4.48 to v0.4.54 in develop branch

## v0.5.11

Catch the ‘file not found’ error when trying to read partial results of time evolution.

## v0.5.10

Added check which prevents users from accidentally deleting current or parent folder when running the simulations.

## v0.5.9

Added new modeling term BlockTerm2D

## v0.5.8

Added methods to read from the hdf5 files for the local and correlation observables.

This enables reading/writing to hdf5 for energy, norm, time and local and correlation observables.

Bugfix for continue file, now allowing parameterization.

## v0.5.7

Added the new observable type TNObsCustom which can measure correlations on the customly chosen positions.

## v0.5.6

Add write method and to_tensor_list_mps for the LPTN emulator.

Move spinglass operators from Contrib to quantumtealeaves.

Add example for LPTN via MPS.

## v0.5.5

Second caching strategy for sampling and TTN.

Bugfix during estimating size of current cache

Bugfix writing data type of finite-temperature convergence parameters (now considering data type)

## v0.5.4

Fixed online generation of the documentation by installing the mpmath and joblib libraries on the gitlab server

## v0.5.3

Bugfix for unbiased (OPES) sampling with low precision (numpy). In particular, the np.isclose function was impaired by the relative tolerance, now set to 0.

## v0.5.2

Implemented measurement of magic for MPS emulator

The OPES (unbiased) sampling now uses numpy if a low enough precision is asked, being numpy much faster than mpmath.

ATTNSimulation can now use the python backend for TTN ground state searches with single-site update and no symmetry.

## v0.5.1

Implemented machine learning MPS, computing the gradient of the tensors as in this work: https://arxiv.org/pdf/1605.05775.pdf

The MPS.dot method can now contract only subsections of the MPS

## v0.5.0

New develop version

## v0.4.54

requirements as a static list in setup.py.

## v0.4.53

Fix requirements in package setup.

## v0.4.52

Update descriptions for PyPi package delivery.

## v0.4.51

Setup PyPi deployment to testpypi for master branch, i.e., the conan channel stable.

## v0.4.50

Update exporting of conan packages

Small updates docs

## v0.4.49

Bugfix for docs not showing

## v0.4.48

Update to stable master branch

Solved bug in get_rho_i for the MPS class

## v0.4.47

The singular values are updated when the isometry is moved through SVD

Added plotting option for the TTN for visualizng, for example, the entanglement.

## v0.4.46

Implemented data_type as new simulation parameter to pass the options for data precision C/D/S/Z.

## v0.4.45

Bugfix conversion LPTN to TTO, i.e., number of layers, QR on top layer, factor 100.

## v0.4.44

Bugfix for occasionally missing left/right operator in 1d system with symmetries.

Bugfixes sampling TTN.

Add automatic cleaning of TTN cache during sampling.

## v0.4.43

Enable parameterization of tn_type, e.g., TTN vs MPS in one simulation.

## v0.4.42

Add combined operators.

## v0.4.41

Enable sparse MPO for local terms and 1d nearest-neighbor terms.

## v0.4.40

Enable caching strategy for sampling from TTN for superiterations (in the unbiased sampling).

Fix unittest with random results testing fortran interface writing operators.

## v0.4.39

Construction of Hamiltonian as a sparse matrix for ED.

Exectuable of quantum green tea can be specified.

Fix some additional linter checks raised by difference in function call.

Fix unittest with mpi4py present, but not running with MPI.

## v0.4.38

Add mpi send/recv tensor function in _AbstractTN

Add support for MPI simulations with the MPS backend with the MPIMPS simulator

## v0.4.37

Added masks in the PlaquetteTerm2D.

Moved PlaquetteTerm to qtealeaves.modeling and renamed to PlaquetteTerm2D.

## v0.4.36

Negativity of TTO density matrix can now be computed via the eigenvalues of partially transposed density matrix.

Upgraded the error message in aTTN disentangler position check.

## v0.4.35

Add support for data parallel MPI simulations in quantum green tea.

Parse CPU time from log file if available.

## v0.4.34

Bugfix for the padding introduced in 0.4.33. It is now possible to pass a None value without an error.

## v0.4.33

The TTN function for generating product TTN state from local states can now pad the TTN tensors with zeros.

## v0.4.32

Added the option for automatic disentangler position selection for aTTN simulations.

## v0.4.31

Enabled setting the initial state with continue_file for exact diagonalization methods.

## v0.4.30

Enabled cupy for TTO/TTNs: now you can run them on GPU.

Enable singular values cut track in TTNs.

Added trnc_tracking_mode in TNConvergenceParameters for handling the ttn cut singvals in python

renamed to_tensorlist to to_mps_tensorlist since it was misleading, you could not call TTN.from_tensorlist(ttn.to_tensorlist()) to obtain the same TTN. Now the function TTN().to_tensorlist() returns the input of from_tensorlist()

bugfix in TTN().apply_two_sites_operator()

Removed automatic swap in MPS().apply_two_sites_operator()

## v0.4.29

Added check for disentangler position which prevents the fortran error when working with Plaquette terms.

## v0.4.28

Removed print statements from Hilbert curvature unittest.

## v0.4.27

Automatic generation of simulation for quantum trajectories.

Add subfolders for input and output of quantum trajectories run.

Add quantum trajectory_id and seed.

Read and average observables for quantum trajectories.

## v0.4.26

Provide 3d quantum Ising model as one of the default models

Extend HilbertCurve with function to backmap observables.

Allow passing new variables now available in the input reader.

## v0.4.25

Modified leg order for the TTO, now it follows leg order of TTN

TTO now inherits from TTN, so all the functions are freely available

TTN is more flexible now, does not always have two tensors on top

Added get_rho_i method to MPS

Moved meas_local to the _AbstractTN

## v0.4.24

Implemented shifting of a selected link through the TTN.

Implemented applying the 2-site operators to TTN.

Implemented swapping of two sites in TTN.

Added the possibility to truncate the singular values throughout the isometry shifting procedure.

## v0.4.23

Improve description bond entropy to distinguish between MPS and TTN implementation.

## v0.4.22

Implemented measurement of local operators for TTNs

Implemented measurement of tensor product operators for TTNs

Implemented measurement of weighted sum operators for TTNs

Implemented measurement of bond entropy for TTNs

Added singvals attribute to TTNLayer to keep track of the singular values on each link of the TTN

Modified the ouput of meas_entanglement in the mps simulator such that it is the same of the ttn emulator, i.e. a dict where the key is the bipartition and the value is the Von Neumann entanglement.

Added checks for observables in _AbstractTN

Added automatic removal of singvals in qr_towards_top method of TTNLayer

Added optional removal of singvals in iso_towards

Implemented possible None values in the singvals also for the MPS

## v0.4.21

Fixed broken 3D masked terms.

## v0.4.20

Added new checks for the choice of disentangler positions.

## v0.4.19

Added missing documentation to lptn_to_tto_iso function in TTO simulator.

## v0.4.18

Implemented unbiased sampling at arbitrary precision through the mpmath library.

## v0.4.17

Allow to set seed from the python side, e.g., for quantum trajectories.

## v0.4.16

Documented TTN time evolution workflow in ATTNSimulation.run function.

## v0.4.15

Fixed typo in README file.

## v0.4.14

Implemented constructing a separable state TTN given the local states of each of the sites for 1d and 2d grid. The 2d case is handled by mapping the particle positions from 2d to 1d.

## v0.4.13

Added new class of operators: effective operators

Added rules to update the effective operators along a TNN when the isometry is moved.

Added local optimization of tensor in the TTN

Added neighbors, sites, op_neighbors attributes to TTNLayer mimicking fortran

Ground state searches are now possible for hamiltonians that are tensor product operators

The TTN class is going towards supporting a general TTN, not only a binary one, even though at the moment the only topology still supported is the binary

The TTN is now not initialized empty but with a random isometry

## v0.4.12

Added the missing import of

`timecorrelator`

observable to the corresponding __init__.py file.

## v0.4.11

Fixed bug in the from_pauli method of WeightedSumOperators.

## v0.4.10

Added a new method for the expansion of the bond dimension of a link through a QR decomposition following https://arxiv.org/pdf/2212.09782.pdf in the AbstractTN class.

Moved the truncation of the singular values in its own method instead of being inside the tSVD function

Added new possible truncation scheme using the norm truncated in the singular values

Added new parameters to control the singular values cut in TNConvergenceParameters

Modified the diagonal matrix multiplication with broadcast in tSVD

## v0.4.9

Bugfix in computing the isometrization path in TTN simulator

## v0.4.8

Update reading and writing of TTN for updated TTN attributes on the fortran side, e.g., op_neighbors.

## v0.4.7

Bugfix shifting isometry center in TTN emulator.

Convert isometry center from F90 file to python indices

## v0.4.6

Allow trivial mapping for 1d case and zigzag.

## v0.4.5

Generate symmetric operators for fortran which can be contracted over the columns. Backwards compatibility broken for python-fortran interface.

Bugfix writing symmetric tensors of a zero-matrix. Add unit test for spin 1/2 operators and bosonic operators.

## v0.4.4

Start mirroring stable, i.e., master to public repository.

Change link to documentation.

## v0.4.3

Documentation for new State2File measurement option saving TN without symmetries

Remove superfluous print

## v0.4.2

Breaks backwards compatibility

Remove input version v1 and v2

Remove other deprecated input, e.g.,

`bc`

for boundary condition which is now`has_obc`

.Remove integration test out of this repository.

## v0.4.1

Introduces major diff without changing code logic

Include pre-commit in requirements.

Include black as a git (pre-commit) hook.

## v0.4.0

Breaks backwards compatibility

Rename package in qtealeaves.

We suggest import qtealeaves as import qtealeaves as qtl

## v0.3.39

Allow custom maps derived from Hilbert curvature.

## v0.3.38

Replace Hilbert curve encoded only for selected cubes by function generating Hilbert curve on the fly.

## v0.3.37

Bugfix when building Hamiltonian (operators defined as functions where not correctly resolved).

## v0.3.36

Bugfix writing observables from ED simulations, which requires setting boolean for what observables are measured.

Bugfix in vector of system sizes.

## v0.3.35

Fixed the bug for importing models and operators.

## v0.3.34

Bugfix for linear combinations of MPSs states. Before, the shape of the tensor used was always the same. Now, it uses left and right tensor correctly.

## v0.3.33

A finite temperature density matrix can now be computed for a given model.

## v0.3.32

Fixed bugs in TTO simulator.

Added isometrized LPTN to TTO conversion.

Added aditional SVD in LPTN to TTO conversion function.

Implemented norm tracking and added the option for changing K_0 in LPTN to TTO conversion.

Added function for truncating the TTO probabilities to TTO simulator.

## v0.3.31

Implement periodic boundary conditions for plaquette term classes, methods “get_interactions”. Added keywork argument ‘has_obc’ to init method

## v0.3.30

Fixed resolution of system sizes in qed_models. PlaquetteTerm methods are made compatible with system sizes specified as per v0.3.28.

## v0.3.29

Introduce new measurement of time correlator to the initial state at t=0. The correlator is measured between two operators A and B as <A(t=0) B(t)>.

Introduce new measurement of four-body correlator of the type <O_1 O_2 O_3 O_4>.

The implementation of new observables depends on the backend; an availability on the python frontend does not indicate that they will be measured on the backend.

## v0.3.28

Bugfix for rectangular or cubed systems in the modeling of Hamiltonians. The assumption of equal dimensions was removed. System sizes can be passed as parameter and are resolved correctly.

## v0.3.27

Fixed bug for reset operation in MPSs

Added scipy SVD when numpy fails

Added possibility of performing the canonization through SVDs to reduce the bond dimension

## v0.3.26

Migrate CI/CD to docker; update linter version.

## v0.3.25

Enable projective measurements and unbiased projective measurements to the TTN

## v0.3.24

Now user can install and shift the gauge center of the LPTN.

Added function for computing the reduced density matrix from the LPTN for single or neighbour sites.

TTO functions for installing and shifting the gauge center are no longer staticmethods, but methods.

Added the gauge center attribute to TTO.

## v0.3.23

Implemented functions for computing the entanglement monotones of a TTO density matrix.

Replaced QR decomposition with SVD in conversion from LPTN to TTO.

Fixed bug of indentation error in read_tensor() function in fortran_interfaces.py.

## v0.3.22

Update reading results with version number of results.

Bugfix writing real parameters, which is required for gfortran compiler.

Bugfix missing write of version number when writing observables from python.

Remove integration tests from this repository.

## v0.3.21

Solved error in plaquette coordinates, methods “get_interactions” in file “qed_models.py”

## v0.3.20

Now qtealeaves can read the latest version of tn_api_input_reader, that also shows the version of the input reader.

## v0.3.20

Implemented function for reading LPTN from fortran output file.

## v0.3.19

Move convergence parameters into an extra folder; old simulation require to modify the import statements.

Provide convergence parameters for finite-temperature simulations.

## v0.3.18

Update links in readme and docs to baltig.

## v0.3.17

Solved bug for reading TNObsBondEntropy from fortran

## v0.3.16

Implemented tSVD on GPU using cupy library on the AbstractTN class

Implemented fully working MPS simulator on GPU using cupy

## v0.3.15

Change conan user for deployment.

## v0.3.14

Remove fortran dependencies; move integration tests to different folder. (to be removed later from this repository.)

## v0.3.13

Added function for Kronecker product of two LPTNs.

## v0.3.12

Solved bug on time_offset for saving time-dependent parameters into a dict.

## v0.3.11

Solved bug on 4 Levels qudit operators.

## v0.3.10

Fixed bug: before when adding sites to the MPS the gauge center was always always moved one step to the right, even if the site was added after the gauge center. Now it is moved only when the site is added to the left of the gauge center, as expected.

## v0.3.9

Update fortran dependency: changes in cmake structure and module names.

Export license files into conan package.

## v0.3.8

added class for LPTN, class for TTO and function for converting LPTN to TTO

## v0.3.7

Solved bug on add/remove site on mps simulator. The methods previously were not modifying the lists handling the singular values.

## v0.3.6

Solved circular input problems

## v0.3.5

Enable LPTN as backend for TN simulations. Restrictions are still in place, i.e., no symmetries, only nearest-neighbor interactions in 1d, no dynamics (new git submodule/module in dependency).

Bugfix vector of convergence parameters

## v0.3.4

Improved documentation for observables.

Added support for sphinx-gallery and examples are now in the docs.

## v0.3.3

Import of operators has to be fixed to use old scripts.

## v0.3.2

Introduce function to QuantumModel to extract time-dependent pulses.

## v0.3.1

Import of the QuantumModel and model terms has to be fixed to use old scripts.

The RydbergModel has been removed.

The deprecated variable specifying the boundary conditions of the QuantumModel has been converted to an optional argument.

Short-cuts to common models have been introduced, e.g., the quantum Ising model.

## v0.3.0

Import of observables has to be fixed to use old scripts.

New observables are available, mainly implemented for quantum circuit MPS.